package com.zw.a.basic.a14.demo03_udp_exercise;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

//UDP发送数据：数据来自于键盘录入，直到输入的数据是886，发送数据结束
public class SendDemo {
    public static void main(String[] args) throws Exception {
        //1. 创建发送端Socket对象.
        DatagramSocket ds = new DatagramSocket();
        //2. 创建输入流, 用于接收用户键盘录入的数据.
        //采用JDK封装好的类实现
        Scanner sc = new Scanner(System.in);
        //自定义封装键盘录入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //3. 定义变量line, 接收用户录入的数据.
        String line;
        //4. 循环接收, 只要不为null, 就一直接收.
        //while((line = sc.nextLine()) != null) {
        while ((line = br.readLine()) != null) {
            //5. 判断用户录入的是否是"886", 如果是, 发送结束
            if ("886".equals(line)) {
                break;
            }

            //6. 如果不是, 就创建数据报包, 封装要发送的数据.
            byte[] bys = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("127.0.0.1"), 12345);

            //7. 发送数据(报包)
            ds.send(dp);
        }

        //8. 关闭客户端.
        ds.close();
    }
}
